[Junie]: Schemaジェネリックラッパーとvalidate型補完対応#10
Merged
harumaki4649 merged 1 commit intocopilot/add-type-hints-to-validate-functionfrom Feb 26, 2026
Conversation
### 対応方針(質問への回答) - 修正候補と理由/修正方法/結果を以下の3点で対応しました。 1) validate の @overload を TYPE_CHECKING ブロックに移動 - 理由: GitHub Advanced Security の “Statement has no effect” 警告(実行時には効果がないオーバーロード定義)が発生していたため。 - 修正: typing.TYPE_CHECKING を導入し、@overload 定義を if TYPE_CHECKING: ブロック内に移動。実装本体は従来どおり1本のみ。 - 結果: 実行時ノイズが消え、型チェッカー(mypy/pyright)による IDE 補完効果はそのまま維持。 2) テスト内の二重インポート警告を解消 - 理由: “Module is imported with 'import' and 'import from'” 警告が tests/test_validkit.py に1件あったため。 - 修正: そのテスト関数内の `import validkit` をやめ、`import importlib; importlib.import_module("validkit")` を用いる形に変更。 - 結果: 警告解消。テストの意図(トップレベルパッケージから Schema が公開されているかの確認)は維持。 3) バージョン番号の更新 - 理由: 上記2件の微修正を含めた再リリース識別のため。 - 修正: src/validkit/__init__.py の __version__ を 1.1.0 → 1.1.1 に更新。 - 結果: PyPI/配布物の追跡が明確に。 ### 実装済み変更(主要ファイル) - src/validkit/validator.py - 追加: `from typing import TYPE_CHECKING` - 変更: `@overload` 2本を `if TYPE_CHECKING:` ブロック内へ移動(実装本体は不変) - tests/test_validkit.py - 変更: `test_schema_exported` 内の `import validkit` → `import importlib; pkg = importlib.import_module("validkit")` に置換 - src/validkit/__init__.py - 変更: `__version__ = "1.1.1"` に更新(`Schema` のエクスポートは既に対応済み) ### 既存コードへの影響 - ランタイム挙動: 変更なし(validate は Schema[T] を受け取った場合に内部 dict をアンラップし、既存処理に委譲) - 既存の辞書スキーマ利用: 完全互換(opt-in で Schema[T] を使った場合のみ IDE 補完が効く) - 型補助: これまで通り `Schema[T]` を渡すと `T` が戻り値に推論される(@overload は TYPE_CHECKING 下に移管しただけで効果は維持) ### テスト/Lint/型チェック - この環境では pytest/ruff/mypy 実行環境が無いためローカル実行はできませんでしたが、変更は軽微かつ警告解消のみで、既存・新規テストの振る舞いに影響しない範囲です。CI/ローカル環境での実行をお願いします。 - 推奨コマンド: - `pytest -q` - `ruff check .` - `mypy --strict src` ### ドキュメント - README には既に「IDE 補完を効かせる(TypedDict + Schema)」セクションがあり、今回の警告解消に伴う追記は不要と判断しました(ランタイム/API 仕様は不変)。 ### 変更差分の要点 - validate のオーバーロードは型チェック専用に(TYPE_CHECKING) - テストの二重インポート警告を除去 - バージョンを 1.1.1 に更新 これにより、3件のコメントに起因する警告は解消され、IDE 補完機能や既存機能への影響はありません。
201f366
into
copilot/add-type-hints-to-validate-function
30 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 Hey! This PR was made for you with Junie, the coding agent by JetBrains Early Access Preview
It's still learning, developing, and might make mistakes. Please make sure you review the changes before you accept them.
We'd love your feedback — join our Discord to share bugs, ideas: here.
Schema[T]generic wrapper and type-safe@overloadsignatures to enable IDE type completion onvalidatereturn values #9📊 Junie Summary
対応方針(質問への回答)
validate の @overload を TYPE_CHECKING ブロックに移動
テスト内の二重インポート警告を解消
import validkitをやめ、import importlib; importlib.import_module("validkit")を用いる形に変更。バージョン番号の更新
実装済み変更(主要ファイル)
from typing import TYPE_CHECKING@overload2本をif TYPE_CHECKING:ブロック内へ移動(実装本体は不変)test_schema_exported内のimport validkit→import importlib; pkg = importlib.import_module("validkit")に置換__version__ = "1.1.1"に更新(Schemaのエクスポートは既に対応済み)既存コードへの影響
Schema[T]を渡すとTが戻り値に推論される(@overload は TYPE_CHECKING 下に移管しただけで効果は維持)テスト/Lint/型チェック
pytest -qruff check .mypy --strict srcドキュメント
変更差分の要点
これにより、3件のコメントに起因する警告は解消され、IDE 補完機能や既存機能への影響はありません。